Data Caching হলো এমন একটি কৌশল যা সার্ভার থেকে ডেটা বারবার ফেচ না করে, একবার প্রাপ্ত ডেটাকে কিছু সময়ের জন্য সিস্টেমে সংরক্ষণ (cache) করে রাখে। এটি অ্যাপ্লিকেশনের পারফরম্যান্স বৃদ্ধি করতে সাহায্য করে, কারণ এতে সার্ভারের প্রতি রিকোয়েস্টের সংখ্যা কমে যায় এবং ডেটা দ্রুত লোড হয়। Ajax এর মাধ্যমে ডেটা কaching ব্যবহারের মাধ্যমে আপনি ওয়েব পেজের দ্রুততা এবং ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে পারেন।
এখানে Ajax এর মাধ্যমে ডেটা কaching টেকনিক্স কিভাবে ব্যবহার করা যায় তা বিস্তারিত আলোচনা করা হবে।
Caching প্রক্রিয়াটি সাধারণত সার্ভার সাইড বা ক্লায়েন্ট সাইডে ডেটা সংরক্ষণ করা হয়। ক্লায়েন্ট সাইডে browser caching বা localStorage/ sessionStorage ব্যবহার করা যেতে পারে, এবং সার্ভার সাইডে ডেটা সংরক্ষণের জন্য বিভিন্ন ধরনের ক্যাশিং ব্যবহৃত হয়।
localStorage এবং sessionStorage হলো ওয়েব ব্রাউজারের দুটি স্টোরেজ সুবিধা, যা ক্লায়েন্ট সাইডে ডেটা ক্যাশে রাখতে ব্যবহৃত হয়। localStorage ডেটা ব্রাউজার বন্ধ করার পরেও সংরক্ষণ করে, তবে sessionStorage শুধুমাত্র সেশন চলাকালীন সময়ের জন্য ডেটা সংরক্ষণ করে।
JavaScript (localStorage):
function fetchData() {
// চেক করা হচ্ছে যদি localStorage তে ডেটা থাকে
if (localStorage.getItem("userData")) {
const cachedData = JSON.parse(localStorage.getItem("userData"));
displayData(cachedData); // ক্যাশ করা ডেটা ডিসপ্লে করা
} else {
// যদি ক্যাশে না থাকে, তাহলে AJAX রিকোয়েস্ট করা
const xhr = new XMLHttpRequest();
xhr.open("GET", "https://jsonplaceholder.typicode.com/posts", true);
xhr.onload = function () {
if (xhr.status === 200) {
const response = JSON.parse(xhr.responseText);
localStorage.setItem("userData", JSON.stringify(response)); // ডেটা ক্যাশে রাখা
displayData(response); // ডেটা ডিসপ্লে করা
} else {
console.log("Error fetching data");
}
};
xhr.send();
}
}
function displayData(data) {
const userDataContainer = document.getElementById("userData");
userDataContainer.innerHTML = "<ul>";
data.forEach(item => {
userDataContainer.innerHTML += `<li>${item.title}</li>`;
});
userDataContainer.innerHTML += "</ul>";
}
fetchData(); // ডেটা ফেচ করা
IndexedDB হল একটি আরও শক্তিশালী এবং স্কেলেবল স্টোরেজ সিস্টেম, যা বড় ডেটাসেট সংরক্ষণ করতে সক্ষম। এটি ব্রাউজার-সাইডে ডেটা সংরক্ষণ এবং অনুসন্ধান করার জন্য ব্যবহার করা হয়।
function openDB() {
var request = indexedDB.open("myDatabase", 1);
request.onerror = function(event) {
console.log("Database error: " + event.target.errorCode);
};
request.onsuccess = function(event) {
console.log("Database opened successfully");
let db = event.target.result;
// ডেটা খোঁজা
let transaction = db.transaction(["posts"], "readonly");
let objectStore = transaction.objectStore("posts");
let getRequest = objectStore.get(1); // ডেটা অ্যাক্সেস
getRequest.onsuccess = function(event) {
if (getRequest.result) {
console.log("Data from IndexedDB:", getRequest.result);
} else {
console.log("No data found, fetching from API");
fetchAndStoreData(db);
}
};
};
}
function fetchAndStoreData(db) {
const xhr = new XMLHttpRequest();
xhr.open("GET", "https://jsonplaceholder.typicode.com/posts", true);
xhr.onload = function () {
if (xhr.status === 200) {
const data = JSON.parse(xhr.responseText);
// IndexedDB তে ডেটা স্টোর করা
let transaction = db.transaction(["posts"], "readwrite");
let objectStore = transaction.objectStore("posts");
objectStore.put(data, 1); // ডেটা সংরক্ষণ করা
console.log("Data saved in IndexedDB", data);
} else {
console.log("Error fetching data");
}
};
xhr.send();
}
openDB(); // IndexedDB খোলা
ওয়েব সার্ভার কনফিগারেশন বা API রেসপন্সের মাধ্যমে ডেটা ক্যাশ করতে Cache-Control হেডার ব্যবহার করা যেতে পারে। এটি নির্দিষ্ট সময়ের জন্য ডেটা ক্যাশে রেখে পরবর্তীতে দ্রুত রেসপন্স প্রদান করে।
PHP Cache-Control Header Example:
<?php
// Cache-Control হেডার সেট করা
header("Cache-Control: max-age=3600"); // 1 ঘন্টার জন্য ক্যাশে রাখতে বলা হচ্ছে
// API ডেটা রেসপন্স করা
$data = ["message" => "This is cached data"];
echo json_encode($data);
?>
এখানে, max-age=3600
নির্দেশ করে যে, রেসপন্সের ডেটা 1 ঘণ্টা (3600 সেকেন্ড) ক্যাশে থাকবে এবং পরবর্তীতে সেই সময়ের মধ্যে রিকোয়েস্টে ডেটা পুনরায় ক্যাশ থেকে আসবে।
Ajax এবং Data Caching টেকনিক্স ব্যবহার করে ওয়েব অ্যাপ্লিকেশনগুলিতে ডেটা ফেচিং এবং পারফরম্যান্স অটো-আপডেট করা সম্ভব। ক্লায়েন্ট সাইডের localStorage, sessionStorage, IndexedDB বা সার্ভার সাইডের Cache-Control হেডার ব্যবহার করে ডেটা ক্যাশ করতে পারেন। এর মাধ্যমে ওয়েব অ্যাপ্লিকেশনের কর্মক্ষমতা উন্নত হবে এবং ব্যবহারকারীর অভিজ্ঞতা আরও দ্রুত হবে।
Read more